const {
    jwtDecode
} = require("../utils/jwt")

//引入数据库集合对象
const adminModel = require("../db/model/adminModel")

//token校验中间件
module.exports = async (req, res, next) => {
    const {
        token
    } = req.headers;

    // 对token进行解码（返回一个对象，code代表解码的情况）
    /*  {
        code: 1,
        adminName
    } */
    const jwtResult = jwtDecode(token, "18069277360")

    // 解码失败
    if (jwtResult.code === 0) {
        return res.send({
            code: 20000,
            msg: "服务器权限校验解码失败",
            data: null
        })
    }

    //解码成功，返回对象中有一个adminName，继续查询当前status是否为1
    try {
        const findResult = await adminModel.findOne({
            adminName: jwtResult.adminName
        })

        if (findResult.status === 0) {
            return res.send({
                code: 20000,
                msg: "服务端权限校验失败,数据库保存的status异常",
                data: null
            })
        }

        // 权限校验通过，继续向下运行
        next()

    } catch (e) {
        console.log("权限控制中:查询status状态出现异常" + e.message);
        res.send({
            code: 20000,
            msg: "权限控制中:查询status状态出现异常" + e.message,
            data: null
        })
    }

}